home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / Vertigo / Common / Headers / ProcInfo.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-06-24  |  9.1 KB  |  144 lines

  1. #ifndef _PROCINFO_
  2. #define _PROCINFO_
  3.  
  4. #include <Events.h>
  5. #include <MixedMode.h>
  6. #include <MacTypes.h>
  7.  
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12.  
  13. #define RESULT_OFFSET(type)    ((sizeof(type) == 1) ? 3 : ((sizeof(type) == 2) ? 1 : 0))
  14.  
  15. typedef pascal void (*CleanUpApplicationPatchPtr)(void);
  16. typedef pascal void (*CloseCPortPatchPtr)(CGrafPtr port);
  17. typedef pascal void (*ClosePortPatchPtr)(GrafPtr port);
  18. typedef pascal void (*CopyBitsProcPtr)(BitMap *srcBits,BitMap *dstBits,Rect *srcRect,Rect *dstRect,short mode,RgnHandle maskRgn);
  19. typedef pascal void (*CopyBitsPatchPtr)(BitMap *srcBits,BitMap *dstBits,Rect *srcRect,Rect *dstRect,short mode,RgnHandle maskRgn,CopyBitsProcPtr copyBitsProc);
  20. typedef pascal void (*CopyBitsPrePatchPtr)(BitMap **srcBits,BitMap **dstBits,Rect **srcRect,Rect **dstRect,short *mode,RgnHandle *maskRgn);
  21. typedef pascal void (*CopyBitsPostPatchPtr)(BitMap **srcBits,BitMap **dstBits,Rect **srcRect,Rect **dstRect,short *mode,RgnHandle *maskRgn);
  22. typedef pascal void (*OpenCPortPatchPtr)(CGrafPtr port);
  23. typedef pascal void (*OpenPortPatchPtr)(GrafPtr port);
  24. typedef pascal void (*SynchIdleTimePatchPtr)(void);
  25.  
  26. #if GENERATINGCFM
  27. typedef UniversalProcPtr                 CleanUpApplicationPatchUPP;
  28. typedef UniversalProcPtr                CloseCPortPatchUPP;
  29. typedef UniversalProcPtr                ClosePortPatchUPP;
  30. typedef UniversalProcPtr                CopyBitsPatchUPP;
  31. typedef UniversalProcPtr                CopyBitsPrePatchUPP;
  32. typedef UniversalProcPtr                CopyBitsPostPatchUPP;
  33. typedef UniversalProcPtr                OpenCPortPatchUPP;
  34. typedef UniversalProcPtr                OpenPortPatchUPP;
  35. typedef UniversalProcPtr                 SynchIdleTimePatchUPP;
  36. #else
  37. typedef CleanUpApplicationPatchPtr         CleanUpApplicationPatchUPP;
  38. typedef CloseCPortPatchPtr                CloseCPortPatchUPP;
  39. typedef ClosePortPatchPtr                ClosePortPatchUPP;
  40. typedef CopyBitsPatchPtr                CopyBitsPatchUPP;
  41. typedef CopyBitsPrePatchPtr                CopyBitsPrePatchUPP;
  42. typedef CopyBitsPostPatchPtr            CopyBitsPostPatchUPP;
  43. typedef OpenCPortPatchPtr                OpenCPortPatchUPP;
  44. typedef OpenPortPatchPtr                OpenPortPatchUPP;
  45. typedef SynchIdleTimePatchPtr            SynchIdleTimePatchUPP;
  46. #endif
  47.  
  48. enum {
  49.     uppCleanUpApplicationPatchProcInfo = kPascalStackBased,
  50.     uppCloseCPortPatchProcInfo = kPascalStackBased
  51.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(CGrafPtr))),
  52.     uppClosePortPatchProcInfo = kPascalStackBased
  53.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(GrafPtr))),
  54.     uppCopyBitsProcInfo = kPascalStackBased
  55.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(BitMap*)))
  56.         | STACK_ROUTINE_PARAMETER(2,SIZE_CODE(sizeof(BitMap*)))
  57.         | STACK_ROUTINE_PARAMETER(3,SIZE_CODE(sizeof(Rect*)))
  58.         | STACK_ROUTINE_PARAMETER(4,SIZE_CODE(sizeof(Rect*)))
  59.         | STACK_ROUTINE_PARAMETER(5,SIZE_CODE(sizeof(short)))
  60.         | STACK_ROUTINE_PARAMETER(6,SIZE_CODE(sizeof(RgnHandle))),
  61.     uppCopyBitsPatchProcInfo = kPascalStackBased
  62.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(BitMap*)))
  63.         | STACK_ROUTINE_PARAMETER(2,SIZE_CODE(sizeof(BitMap*)))
  64.         | STACK_ROUTINE_PARAMETER(3,SIZE_CODE(sizeof(Rect*)))
  65.         | STACK_ROUTINE_PARAMETER(4,SIZE_CODE(sizeof(Rect*)))
  66.         | STACK_ROUTINE_PARAMETER(5,SIZE_CODE(sizeof(short)))
  67.         | STACK_ROUTINE_PARAMETER(6,SIZE_CODE(sizeof(RgnHandle)))
  68.         | STACK_ROUTINE_PARAMETER(7,SIZE_CODE(sizeof(CopyBitsProcPtr))),
  69.     uppCopyBitsPrePatchProcInfo = kPascalStackBased
  70.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(BitMap**)))
  71.         | STACK_ROUTINE_PARAMETER(2,SIZE_CODE(sizeof(BitMap**)))
  72.         | STACK_ROUTINE_PARAMETER(3,SIZE_CODE(sizeof(Rect**)))
  73.         | STACK_ROUTINE_PARAMETER(4,SIZE_CODE(sizeof(Rect**)))
  74.         | STACK_ROUTINE_PARAMETER(5,SIZE_CODE(sizeof(short*)))
  75.         | STACK_ROUTINE_PARAMETER(6,SIZE_CODE(sizeof(RgnHandle*))),
  76.     uppCopyBitsPostPatchProcInfo = kPascalStackBased
  77.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(BitMap**)))
  78.         | STACK_ROUTINE_PARAMETER(2,SIZE_CODE(sizeof(BitMap**)))
  79.         | STACK_ROUTINE_PARAMETER(3,SIZE_CODE(sizeof(Rect**)))
  80.         | STACK_ROUTINE_PARAMETER(4,SIZE_CODE(sizeof(Rect**)))
  81.         | STACK_ROUTINE_PARAMETER(5,SIZE_CODE(sizeof(short*)))
  82.         | STACK_ROUTINE_PARAMETER(6,SIZE_CODE(sizeof(RgnHandle*))),
  83.     uppOpenCPortPatchProcInfo = kPascalStackBased
  84.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(CGrafPtr))),
  85.     uppOpenPortPatchProcInfo = kPascalStackBased
  86.         | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(GrafPtr))),
  87.     uppSynchIdleTimePatchProcInfo = kPascalStackBased
  88. };
  89.  
  90. #if GENERATINGCFM
  91. #define NewCleanUpApplicationPatch(userRoutine)        (CleanUpApplicationPatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppCleanUpApplicationPatchProcInfo,GetCurrentArchitecture())
  92. #define NewCloseCPortPatch(userRoutine)                (CloseCPortPatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppCloseCPortPatchProcInfo,GetCurrentArchitecture())
  93. #define NewClosePortPatch(userRoutine)                (ClosePortPatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppClosePortPatchProcInfo,GetCurrentArchitecture())
  94. #define NewCopyBitsProc(userRoutine)                (CopyBitsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppCopyBitsProcInfo,GetCurrentArchitecture())
  95. #define NewCopyBitsPatch(userRoutine)                (CopyBitsPatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppCopyBitsPatchProcInfo,GetCurrentArchitecture())
  96. #define NewCopyBitsPrePatch(userRoutine)            (CopyBitsPrePatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppCopyBitsPrePatchProcInfo,GetCurrentArchitecture())
  97. #define NewCopyBitsPostPatch(userRoutine)            (CopyBitsPostPatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppCopyBitsPostPatchProcInfo,GetCurrentArchitecture())
  98. #define NewOpenCPortPatch(userRoutine)                (OpenCPortPatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppOpenCPortPatchProcInfo,GetCurrentArchitecture())
  99. #define NewOpenPortPatch(userRoutine)                (OpenPortPatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppOpenPortPatchProcInfo,GetCurrentArchitecture())
  100. #define NewSynchIdleTimePatch(userRoutine)            (SynchIdleTimePatchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppSynchIdleTimePatchProcInfo,GetCurrentArchitecture())
  101. #else
  102. #define NewCleanUpApplicationPatch(userRoutine)        ((CleanUpApplicationPatchUPP)(userRoutine))
  103. #define NewCloseCPortPatch(userRoutine)                ((CloseCPortPatchUPP)(userRoutine))
  104. #define NewClosePortPatch(userRoutine)                ((ClosePortPatchUPP)(userRoutine))
  105. #define NewCopyBitsProc(userRoutine)                ((CopyBitsUPP)(userRoutine))
  106. #define NewCopyBitsPatch(userRoutine)                ((CopyBitsPatchUPP)(userRoutine))
  107. #define NewCopyBitsPrePatch(userRoutine)            ((CopyBitsPrePatchUPP)(userRoutine))
  108. #define NewCopyBitsPostPatch(userRoutine)            ((CopyBitsPostPatchUPP)(userRoutine))
  109. #define NewOpenCPortPatch(userRoutine)                ((OpenCPortPatchUPP)(userRoutine))
  110. #define NewOpenPortPatch(userRoutine)                ((OpenPortPatchUPP)(userRoutine))
  111. #define NewSynchIdleTimePatch(userRoutine)            ((SynchIdleTimePatchUPP)(userRoutine))
  112. #endif
  113.  
  114. #if GENERATINGCFM
  115. #define CallCleanUpApplicationPatch(userRoutine)            CallUniversalProc((UniversalProcPtr)(userRoutine),uppCleanUpApplicationPatchProcInfo)
  116. #define CallCloseCPortPatch(userRoutine,port)                CallUniversalProc((UniversalProcPtr)(userRoutine),uppCloseCPortPatchProcInfo,(port))
  117. #define CallClosePortPatch(userRoutine,port)                CallUniversalProc((UniversalProcPtr)(userRoutine),uppClosePortPatchProcInfo,(port))
  118. #define CallCopyBitsProc(userRoutine,sb,db,sr,dr,m,r)        CallUniversalProc((UniversalProcPtr)(userRoutine),uppCopyBitsProcInfo,(sb),(db),(sr),(dr),(m),(r))
  119. #define CallCopyBitsPatch(userRoutine,sb,db,sr,dr,m,r,p)    CallUniversalProc((UniversalProcPtr)(userRoutine),uppCopyBitsPatchProcInfo,(sb),(db),(sr),(dr),(m),(r),(p))
  120. #define CallCopyBitsPrePatch(userRoutine,sb,db,sr,dr,m,r)    CallUniversalProc((UniversalProcPtr)(userRoutine),uppCopyBitsPrePatchProcInfo,(sb),(db),(sr),(dr),(m),(r))
  121. #define CallCopyBitsPostPatch(userRoutine,sb,db,sr,dr,m,r)    CallUniversalProc((UniversalProcPtr)(userRoutine),uppCopyBitsPostPatchProcInfo,(sb),(db),(sr),(dr),(m),(r))
  122. #define CallOpenCPortPatch(userRoutine,port)                CallUniversalProc((UniversalProcPtr)(userRoutine),uppOpenCPortPatchProcInfo,(port))
  123. #define CallOpenPortPatch(userRoutine,port)                    CallUniversalProc((UniversalProcPtr)(userRoutine),uppOpenPortPatchProcInfo,(port))
  124. #define CallSynchIdleTimePatch(userRoutine)                    CallUniversalProc((UniversalProcPtr)(userRoutine),uppSynchIdleTimePatchProcInfo)
  125. #else
  126. #define CallCleanUpApplicationPatch(userRoutine)            (*(CleanUpApplicationPatchPtr)(userRoutine))()
  127. #define CallCloseCPortPatch(userRoutine,port)                (*(CloseCPortPatchPtr)(userRoutine))((port))
  128. #define CallClosePortPatch(userRoutine,port)                (*(ClosePortPatchPtr)(userRoutine))((port))
  129. #define CallCopyBitsProc(userRoutine,sb,db,sr,dr,m,r)        (*(CopyBitsProcPtr)(userRoutine))((sb),(db),(sr),(dr),(m),(r))
  130. #define CallCopyBitsPatch(userRoutine,sb,db,sr,dr,m,r,p)    (*(CopyBitsPatchPtr)(userRoutine))((sb),(db),(sr),(dr),(m),(r),(p))
  131. #define CallCopyBitsPrePatch(userRoutine,sb,db,sr,dr,m,r)    (*(CopyBitsPrePatchPtr)(userRoutine))((sb),(db),(sr),(dr),(m),(r))
  132. #define CallCopyBitsPostPatch(userRoutine,sb,db,sr,dr,m,r)    (*(CopyBitsPostPatchPtr)(userRoutine))((sb),(db),(sr),(dr),(m),(r))
  133. #define CallOpenCPortPatch(userRoutine,port)                (*(OpenCPortPatchPtr)(userRoutine))((port))
  134. #define CallOpenPortPatch(userRoutine,port)                    (*(OpenPortPatchPtr)(userRoutine))((port))
  135. #define CallSynchIdleTimePatch(userRoutine)                    (*(SynchIdleTimePatchPtr)(userRoutine))()
  136. #endif
  137.  
  138.  
  139. #ifdef __cplusplus
  140. }
  141. #endif
  142.  
  143. #endif /* _PROCINFO_ */
  144.